// src/services/personalInfoService.js
import api from './api';

const personalInfoService = {
    /**
     * 获取当前教师的个人基本信息
     * 调用后端 /api/teacher/info 接口
     */
    async getPersonalInfo() {
        try {
            const response = await api.get('/api/teacher/info');
            // 【核心修复】将 response.data.success 改为 response.data.status === 0
            if (response.data.status === 0) { // 判断 status 字段是否为 0 (SUCCESS)
                return response.data.data;
            } else {
                // 如果 status 不为 0，则认为是错误，抛出后端返回的错误消息
                throw new Error(response.data.message || '获取个人信息失败');
            }
        } catch (error) {
            throw new Error(error.response?.data?.message || error.message);
        }
    },

    /**
     * 更新当前教师的个人基本信息
     * 调用后端 /api/teacher/info 接口 (PUT 请求)
     * @param {Object} profileData - 包含更新字段的对象 (例如 name, email, phone, department, id)
     */
    async updatePersonalInfo(profileData) {
        try {
            const response = await api.put('/api/teacher/info', profileData);
            // *** 修改点：将 response.data.success 更改为 response.data.status === 0 ***
            if (response.data.status === 0) { // 假设后端成功状态是 status: 0
                return response.data.message || '个人信息更新成功！'; // 成功时正常返回 message
            } else {
                // 后端返回的 status 不为 0，视为失败，抛出错误
                throw new Error(response.data.message || '更新个人信息失败');
            }
        } catch (error) {
            // 捕获请求本身的网络错误、HTTP 状态码错误等
            throw new Error(error.response?.data?.message || error.message || '网络请求失败');
        }
    },

    /**
     * 上传教师头像
     * 调用后端 /api/teacher/info/avatar/upload 接口
     @param {FormData} formData - 包含头像文件的 FormData 对象
     */
    async uploadAvatar(formData) {
        try {
            const response = await api.post('/api/teacher/info/avatar/upload', formData, {
                headers: {
                    'Content-Type': 'multipart/form-data' // 必须设置，否则后端无法正确解析文件
                }
            });
            
            // *** 核心修改点：将 response.data.success 更改为 response.data.status === 0 ***
            if (response.data.status === 0) { // 假设后端统一成功状态是 status: 0
                return response.data.data; // 成功时正常返回头像URL
            } else {
                // 后端返回的 status 不为 0，视为失败，抛出错误
                throw new Error(response.data.message || '头像上传失败');
            }
        } catch (error) {
            // 捕获请求本身的网络错误、HTTP 状态码错误等
            throw new Error(error.response?.data?.message || error.message || '头像上传失败');
        }
    }
};

export default personalInfoService;